https://leetcode.cn/problems/duplicate-zeros/submissions/
1089. 复写零
给你一个长度固定的整数数组 arr ，请你将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。

注意：请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改，不要从函数返回任何东西。

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int des=-1,cur=0;
        while(cur<arr.size())
        {
            if(arr[cur]==0)
            {
                des+=2;
            }
            else
            {
                ++des;
            }

            if(des>=arr.size()-1)
                break;
            ++cur;
        }

        if(des==arr.size())//修正边界
        {
            arr[des-1]=arr[cur];
            des-=2;
            cur--;
        }

        while(cur>=0)
        {
            if(arr[cur]==0)
            {
                arr[des--]=0;
            }
            arr[des--]=arr[cur--];
        }

    }
};